// 以下对象在viewer重载时需要重置

// 工具对象
export const globalTool = {
  measure: null, // 测量工具对象
  slope: null, // 坡度分析对象
  contourLine: null, // 等高线对象
  sightline: null, // 通视分析对象
  limitHeight: null, // 限高分析对象
  split: null, // 卷帘对比对象
  eventTarget: null, //自定义事件对象
  video3dDom: null, // 视频3d投影图层的dom管理对象
  videoPlaneDom: null, // 视频幕布图层的dom管理对象
  videoPolygonDom: null, // 视频地表图斑的dom管理对象
  manuallyRender: null, // 手动渲染对象，用于开启手动渲染
}

// mars3d图层对象
export const globalLayer = {
  slopeLayer: null, // 坡度分析图层
  viewShedLayer: null, // 可视域图层
  sightlineLayer: null, // 通视分析图层
  limitHeightLayer: null, // 限高分析图层
  markLayer: null, // 标注图层
  militaryMark: null, // 军事标注图层
  symbolLayer: null, // 符号库图层（模型种植）
  video3dLayer: null, // 视频3d投影图层
  videoPlaneLayer: null, // 视频幕布图层
  videoPolygonLayer: null, // 视频地表图斑
  panoLayer: null, // 全景图
  modelLayer: null, // gltf图层
  animationLayer: null // 动画图层(辅助点，粒子效果)
}

// cesium CustomDataSource对象 
export const customDataSource = {
  animationSource: null // 模型/模型路径动画
}

// 重置所有对象
export function resetVariable() {
  for (let key in globalTool) {
    if (globalTool[key]) {
      if (globalTool[key].destroy) {
        globalTool[key].destroy(true)
      }
      globalTool[key] = null
    }
  }
  for (let key in globalLayer) {
    if (globalLayer[key]) {
      globalLayer[key].remove(true)
      globalLayer[key] = null
    }
  }
  for (let key in customDataSource) {
    if (customDataSource[key]) {
      viewer.dataSources.remove(customDataSource[key], true)
      customDataSource[key] = null
    }
  }
}